package cn.zwk.drawing.domain.configuration.service;

import cn.zwk.drawing.domain.configuration.model.SystemConfiguration;
import cn.zwk.drawing.domain.diagram.model.DiagramDefinition;
import java.util.Optional;
import java.util.List;

/**
 * 配置管理领域服务接口
 */
public interface ConfigurationDomainService {
    
    /**
     * 获取系统配置
     */
    Optional<SystemConfiguration> getConfiguration(String configId);
    
    /**
     * 获取指定类型的所有配置
     */
    List<SystemConfiguration> getConfigurationsByType(SystemConfiguration.ConfigurationType type);
    
    /**
     * 保存或更新配置
     */
    SystemConfiguration saveConfiguration(SystemConfiguration configuration);
    
    /**
     * 删除配置
     */
    void deleteConfiguration(String configId);
    
    /**
     * 重载配置
     */
    void reloadConfigurations();
    
    /**
     * 获取架构图配置
     */
    Optional<DiagramDefinition> getDiagramConfiguration();
    
    /**
     * 验证配置有效性
     */
    boolean validateConfiguration(SystemConfiguration configuration);
    
    /**
     * 获取配置历史版本
     */
    List<SystemConfiguration> getConfigurationHistory(String configId);
}